#ifndef _AUTH_HMAC_H
#define _AUTH_HMAC_H

class HMACHash
{
	public:
		HMACHash();
		~HMACHash();

		void UpdateFinalizeBigNumbers(BigNumber *bn0, ...);
		void UpdateBigNumber(BigNumber *bn0, ...);

		void UpdateData(const ui8 *dta, int len);
		void UpdateData(const std::string &str);

		void Initialize(ui32 len, ui8 *seed);
		void Finalize();

		ui8 *GetDigest(void) { return mDigest; };
		int GetLength(void) { return 20; };

		BigNumber GetBigNumber();

	private:
		HMAC_CTX mC;
		ui8 mDigest[20];
};

#endif